import VNode from "./VNode";
import createElement from "./createElement";
import patchVNode from "./patchVNode";
export default function patch(oldVNode, newVNode) {
    // 判断旧节点是否为虚拟节点
    if(oldVNode.sel == '' || oldVNode.sel == null) {
        // 将旧节点包装成虚拟dom
        oldVNode = VNode(oldVNode.tagName.toLocaleLowerCase(),{}, undefined, undefined, oldVNode)
    }

    // 判断oldVNode与newVNode是否是同一节点
    if(oldVNode.sel != newVNode.sel && oldVNode.key != newVNode.key) {
        console.log(123)
        // 不是同一节点--暴力拆除
        // 在此旧节点之前创建新节点
        const newDom = createElement(newVNode)
        if(newDom) {
            oldVNode.elm.parentNode.insertBefore(newDom,oldVNode.elm)
        } else {
            oldVNode.elm.parentNode.removeChild(oldVNode.elm)
        }


    } else {
        // 是同一节点--进行比较
        if(newVNode == oldVNode) return false
        patchVNode(oldVNode, newVNode)
    }
}
